An audio signal can be received at a computing system, such as a personal computer or a telephone, and the level of the audio signal can be adjusted by applying a gain to the audio signal. An Automatic Gain Control (AGC) mechanism can be used to automatically adjust the gain applied to the audio signal to ensure that the level of the audio signal is maintained within an acceptable range. The AGC mechanism effectively reduces the level of the audio signal if the received audio signal has a high signal strength and increases the level of the audio signal if the received audio signal has a low signal strength.
A user may enter into a call with another user, such as a private call (with just two users in the call) or a conference call (with more than two users in the call). The user's speech can be received at a microphone and then transmitted over a network to the other user(s) in the call. The audio signals received at the microphone will typically include speech components from the user and also noise from the surrounding environment. The AGC mechanism aims to adjust the gain applied to the audio signal based on the level of the received speech components of the audio signal, without adjusting the gain based on the level of the noise in the received audio signal. In this way, the level of the audio signal is automatically controlled such that the level of the speech in the audio signal is maintained within an acceptable range. In order to achieve this, the AGC mechanism analyses the received audio signal to distinguish between speech components and noise. As part of this analysis, AGC mechanisms often use some kind of signal classification in which specific characteristics of speech signals (such as the pitch frequency, spectral tilt, zero-crossing rate and other signal characteristics) are used to identify components in the audio signal as speech components, wherein only those identified components are used by the AGC mechanism to adjust the gain applied to the audio signal. In this way, signal components such as background noise which do not have the specific characteristics of speech signals will not affect the adjustment of the gain applied to the audio signal.
The AGC mechanism is typically not perfect in identifying speech components in the received audio signal. For example, if the AGC mechanism is too limited in the specific characteristics which are identified as speech components then fewer of the speech components in the audio signal will be identified as such, resulting the in the AGC mechanism changing the level of the audio too slowly. On the other hand, if the AGC mechanism is too broad in the characteristics which are identified as speech components then non-speech sounds in the audio signal may be identified as speech components, such that the level of the audio signal may be changed according to non-speech signals which can be problematic.
When a user operates a computer, noises are often generated. For example when a key on a computer keyboard is pressed there is a short mechanical sound (i.e. a clicking sound). Similarly, when the buttons on a mouse are pressed a clicking sound is produced. When a user is operating a peripheral device of a computer at the same time as partaking in a call, the noise generated by the user's operation of the peripheral device may be included in the audio signal. For example, clicking noise such as the sound from a key stroke on a keyboard might be picked up by the microphone. Keyboard tapping can be a problem for AGC mechanisms because the keyboard tapping can be mistaken for speech components in the audio. This can result in the AGC mechanism changing the level of the audio signal on the basis of the signal level of the keyboard taps in the audio signal.
In the case where the level of the keyboard tapping is lower than the level of the normal speech (as received at the computing system), but the keyboard tapping is audible and detectable and is mistaken for speech, the AGC mechanism might increase the gain so that the level of the keyboard tapping is amplified to be within the acceptable range for speech signals. The keyboard tapping can then interfere with usage of the audio signal, for example, the amplified keyboard tapping can be quite disturbing for other users in a call. The gain applied by the AGC mechanism is therefore higher than is needed for the speech of the user, such that when the user starts speaking his speech would be amplified more than normal which could interfere with the call. If the level of the speech is amplified too much, the speech may overload the system resulting in clipping and/or the need for compression o the speech signal which both will distort the speech. The AGC mechanism would have to reduce the gain to be better suited for the input speech level. This will take some time, and during that time, the level of the speech in the audio signal will be above the acceptable level, which may disrupt the call.
Conversely, in the case where the level of the keyboard tapping is higher than the level of the normal speech (as received at the computing system) such as in a laptop in which the microphone and the keyboard are integrated into the laptop body, and the generated noise is mistaken as speech, the AGC mechanism might decrease the gain so that the level of the keyboard tapping is reduced to be within the acceptable range for speech signals. When the user then speaks, his speech will not be amplified sufficiently to fall within the acceptable range (i.e. the speech might have a worse than necessary signal-to-quantization noise ratio). The AGC would then need to increase the gain to bring the level of the speech up to within the acceptable range. This will take some time, and during that time, the level of the speech in the audio signal will be below the acceptable level range, which may disrupt the call. In an extreme case, the gain applied by the AGC mechanism will be reduced so much due to the keyboard tapping that the speech will be too quiet to be identified as speech and so the AGC mechanism will be unable to increase the gain when the user is speaking and the call might not be able to continue (because the speech cannot be heard) without some kind of human intervention, such as resetting the gain level manually.
One approach for reducing the effect of keyboard tapping on the gain level of the AGC mechanism is to use specific keyboard noise attenuation algorithms for attenuating keyboard noise. By attenuating the keyboard noise it is less likely that the keyboard noise will be mistaken for speech in the audio signal. Keyboard noise attenuation algorithms analyse the audio signal received at the microphone to detect and filter out components of the audio signal that are perceived to be keyboard clicking noise. However, keyboard noise attenuation algorithms tend to introduce delay in the signal path if they are to reliably detect and attenuate keyboard tapping. Furthermore, the keyboard attenuation algorithms will not typically be perfect such that some keyboard tapping is undetected and will therefore affect the gain applied by the AGC mechanism. Furthermore, the detection and attenuation of keyboard tapping from the audio signal introduces additional computational complexity which can use up valuable processing resources in the computing system.
There is therefore a problem of applying a gain with an AGC mechanism to an audio signal received at a computing system in the presence of noise in that the noise in the audio signal can be mistakenly identified as speech resulting in inappropriate adjustment of the gain to be applied by the AGC mechanism.